import { Search } from '../../api/index.js' // 导入api文件下的ajax数据源

// 提供唯一数据源，所有数据放在这里
const state = {
  searchList: []
}
// 发生变更的数据
const mutations = {
  // 商品列表信息接口
  searchList(state, list) {
    state.searchList = list
  }
}
// 所有的异步操作在这个方法调用 例如定时器 1s后才改变数据
const actions = {
  // 商品列表信息接口
  async SearchList(state, params) {
    // 如果接口要传参 至少传一个空对象过去
    // params 该形参是调用接口式要传递的数据
    let result = await Search(params)
    // console.log(result)
    if (result.code === 200) {
      state.commit('searchList', result.data)
    }
  }
}
// 只返回 state 的值，不操作任何改变 相当于计算属性
// 该函数为了简化仓库的数据而存在
const getters = {
  // 商品列表接口 SearchList 下的  goodsList数组，商品信息不需要直接返回SearchList接口
  goodsList(state) {
    // console.log(state.searchList.goodsList)
    // 如果没有网络 服务器 就发不了 SearchList 请求 那么 vuex 中就只有 state.searchList这个空数组 没有
    // searchList.goodsList这个ajax请求接口数据 ，会报错的
    // 所以当 searchList.goodsList 不存在时 要返回一个空对象
    return state.searchList.goodsList || []
  },
  attrsList(state) {
    // 商品详情选择器
    return state.searchList.attrsList || []
  }
}

// 向外共享函数
export default {
  state,
  mutations,
  actions,
  getters
}
